package com.haixiaoke.saas.apartment.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.haixiaoke.saas.common.annotation.Excel;
import com.haixiaoke.saas.common.core.domain.BaseEntity;
import com.haixiaoke.saas.house.domain.House;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalTime;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 房屋配置对象 biz_housing_allocation
 *
 * @author panda
 * @date 2024-03-21
 */
@Data
public class HousingAllocation extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 房屋配置id
     */
    private Long allocationId;

    /**
     * 房屋id
     */
    @Excel(name = "房屋id")
    private String houseId;

    /**
     * 退订规则id
     */
    @Excel(name = "退订规则id")
    private Long unsubscribeRuleId;

    /**
     * 房屋照片路径
     */
    @Excel(name = "房屋照片路径")
    private String apartmentPicture;

    /**
     * 房屋介绍
     */
    @Excel(name = "房屋介绍")
    private String apartmentDescription;

    /**
     * 房屋类型（1简装套房，2精装套房，3豪装套房）
     */
    @Excel(name = "房屋类型", readConverterExp = "1=简装套房，2精装套房，3豪装套房")
    private String allocationType;

    /**
     * 标签id
     */
    @Excel(name = "标签id")
    private String labelIds;

    /**
     * 标签名
     */
    @Excel(name = "标签名")
    private String labelNames;

    /**
     * 床铺数量
     */
    @Excel(name = "床铺数量")
    private Integer bedNumber;

    /**
     * 可住人数
     */
    @Excel(name = "可住人数")
    private Integer checkInNumber;

    /**
     * 联系电话
     */
    @Excel(name = "联系电话")
    private String contactPhone;

    /**
     * 房屋设施id集合
     */
    @Excel(name = "房屋设施id集合")
    private String facilitiesIds;

    /**
     * 景区id
     */
    @Excel(name = "景区id")
    private String attractionsIds;

    /**
     * 景区全名
     */
    @Excel(name = "景区全名")
    private String attractionsFullNames;

    /**
     * 商区id
     */
    @Excel(name = "商区id")
    private Long businessCircleId;

    /**
     * 商区名称
     */
    @Excel(name = "商区名称")
    private String businessCircleName;

    /**
     * 位置描述
     */
    @Excel(name = "位置描述")
    private String locationDescription;

    /**
     * 最少间夜数
     */
    @Excel(name = "最少间夜数")
    private Integer leaseIntervalDay;

    /**
     * 可定范围（1=3个月 2=6个月 3=1年 4=2年）
     */
    @Excel(name = "可定范围", readConverterExp = "1=3个月,2=6个月,3=一年,4=2年")
    private String leaseScope;

    /**
     * 入住时间hh:dd:ss
     */
    @JsonFormat(pattern = "HH:mm")
    @Excel(name = "入住时间HH:mm:ss", width = 30, dateFormat = "HH:mm")
    private LocalTime checkInTime;

    /**
     * 退房时间hh:dd:ss
     */
    @JsonFormat(pattern = "HH:mm")
    @Excel(name = "退房时间HH:mm:ss", width = 30, dateFormat = "HH:mm")
    private LocalTime checkOutTime;

    /**
     * 建议退房时间hh:dd:ss
     */
    @JsonFormat(pattern = "HH:mm")
    @Excel(name = "建议退房时间HH:mm:ss", width = 30, dateFormat = "HH:mm")
    private LocalTime suggestCheckOutTime;

    /**
     * 入住方式（1实名登记，2自助入住）
     */
    @Excel(name = "入住方式", readConverterExp = "1=实名登记，2自助入住")
    private String checkInType;

    /**
     * 押金
     */
    @Excel(name = "押金")
    private BigDecimal cashPledge;

    private BigDecimal browseNum;

    /**
     * 上架状态：0已上架 1已下架
     */
    @Excel(name = "上架状态", readConverterExp = "0=已上架,1=已下架", combo = {"已上架", "已下架"})
    private String apartmentState;

    /**
     * 逻辑删除标志(0代表存在
     */
    private String delFlag;


    /**
     * 房屋配置id集合
     */
    private String[] houseIds;

    /**
     * 价格日历集合
     */
    private List<CalendarPrice> calendarPriceList;

    private House house;

    /**
     * 自定义字段：配置状态 0已配置，1未配置
     */
    private String allocationState;

    /**
     * 自定义字段：房屋照片路径集合
     */
    private List<String> apartmentPictureList;

    /**
     * 自定义字段：房屋配置价格集合
     */
    private List<HousingPrice> housingPriceList;

    /**
     * 自定义字段：房间需求集合
     */
    private List<HouseRequire> houseRequireList;

    /**
     * 自定义字段：关键字搜索
     */
    private String keyword;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /**
     * 自定义字段：设施id集合
     */
    private List<Long> facilitiesIdList;

    /**
     * 自定义字段：标签id集合
     */
    private List<Long> labelIdList;

    /**
     * 自定义字段：景区id集合
     */
    private List<Long> attractionsIdList;

    /**
     * 自定义字段：星期几（1~7）
     */
    private String week;

    /**
     * 入住方式集合（1实名登记，2自助入住）
     */
    private List<String> checkInTypeList;

    /**
     * 自定义字段：今天的房费
     */
    private BigDecimal todayPrice;

    /**
     * 自定义字段：总价
     */
    private BigDecimal totalPrice;

    /**
     * 自定义字段：平均价格
     */
    private BigDecimal averagePrice;

    /**
     * 价格区间筛选：1：0-200；2：200-500；3：500-800；4：800-1000；5：1000-3000；6：3000以上
     */
    private String priceType;

    /**
     * 1）推荐排序：浏览次数从高到低排序
     *  2）低价优先：平均房费从低到高排序
     *  3）高价优先：平均房费从高到低排序
     */
    private String sortType;

    /**
     * 房屋标题
     */
    private String title;

    private List<ServiceFacilities> serviceFacilitiesList;

    private Map<String, List<ServiceFacilities>> serviceFacilitiesMap;

    private UnsubscribeRule unsubscribeRule;

    /**
     * 是否有窗户 0有窗户，1没窗户
     */
    private String windowState;

    /**
     * 是否有电梯 0有电梯，1没电梯
     */
    private String elevatorState;

    /**
     * 户型 4 = 4室及以上
     */
    @JsonIgnore
    private String roomType;

    /**
     * 经度
     */
    private Double longitude;

    /**
     * 纬度
     */
    private Double latitude;




}
